package com.smallA.mapper;

import com.smallA.po.Grade;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;

/**
 * 学生对应的考试类
 */
@Mapper
@Repository
public interface GradeMapper {

    /**
     * 通过学生的id来获取对应的考试表
     * @param sid 学生id
     * @return 返回查询的集合
     */
    List<Grade> selectGradesById(int sid);

    /**
     * 学生报名参加一场考试
     *
     * @param sid 学生id
     * @param tid 考试id
     * @return 返回操作结果
     */
    int insertGrade(@Param("sid") int sid, @Param("tid") int tid);

    /**
     * 修改考试成绩用
     *
     * @param id    考试表id
     * @param score 考试成绩
     * @return 返回操作执行的结果
     */
    int updateGradeScore(@Param("id") int id, @Param("score") float score);

    /**
     * 用户开始考试调用方法,为考试表赋值对应的开始时间
     *
     * @param id   成绩表的id
     * @param date 考试开始时间
     * @return 返回操作的数据数量
     */
    int updateGradeTime(@Param("id") int id, @Param("beginTime") Date date);

    /**
     * 修改考生考试使用的时间
     *
     * @param id       表id
     * @param userTime 使用时间
     * @return 返回操作的数据数量
     */
    int updateGradeEnd(@Param("id") int id, @Param("userTime") int userTime);

    /**
     * 通过id查询具体的成绩表
     *
     * @param gid 成绩表id
     * @return 返回对应的成绩表
     */
    Grade selectGradeById(@Param("gid") int gid);

    /**
     * 通过学生id和对应的考试id来查询数据
     *
     * @param sid 学生id
     * @param tid 考试id
     * @return 返回查询到的数据
     */
    Grade selectGradeExam(@Param("sid") int sid, @Param("tid") int tid);

    List<Grade> selectGradeByTestId(Integer tid);
}
